package com.example.module_main

import android.app.Application
import android.content.Context
import android.content.res.Configuration
import com.alibaba.android.arouter.launcher.ARouter
import dagger.hilt.android.HiltAndroidApp

/**
 * App启动入口
 * 面试题:App启动流程?
 */
@HiltAndroidApp
class ParkApp:Application() {
    /**
     * App挂载时调用
     */
    override fun attachBaseContext(base: Context?) {
        super.attachBaseContext(base)
    }

    /**
     * App创建时调用
     */
    override fun onCreate() {
        super.onCreate()
        ARouter.openLog()
        ARouter.openDebug()
        ARouter.init(this);
    }

    /**
     * App低内存时调用
     */
    override fun onLowMemory() {
        super.onLowMemory()
        //做一些回收相关的处理,如清理Glide内存缓存,释放大的集合、大对象,或者调用System.gc()
    }

    /**
     * App配置改变时调用，如屏幕旋转、语言切换、主题切换等
     */
    override fun onConfigurationChanged(newConfig: Configuration) {
        super.onConfigurationChanged(newConfig)
    }

    /**
     * App退出时调用
     */
    override fun onTerminate() {
        //在此之前可以保存一些状态,但是不能做一些耗时操作
        super.onTerminate()
    }

    /**
     * App内存不足时调用
     */
    override fun onTrimMemory(level: Int) {
        super.onTrimMemory(level)
        //根据level的值，做一些内存释放的操作
    }
}